using System;

namespace PropertyExpression.ReactiveRelation
{
    public interface ICalcExecutor
    {
        void Calculate(
            object sender, Func<string> propertyNameFunc, object previousValue,
            Func<IOneToManyCollectionNewItemProcessor> oneToManyCollectionNewItemProcessorFunc);

        void CalcBatch(Action action);

        TResult CalcBatch<TResult>(Func<TResult> func);

        void CalculateProperties(object entity);
    }
}